모의해킹
호스트기반모의해킹_07_Nmap 스크립트 엔진
작성자 : Heehyeon Yoo|2025-11-19
# Nmap# NSE# Lua# 자동화# 취약점 진단
1. 개요와 구조(Overview & Structure)
Nmap 스크립트 엔진(NSE)은 Nmap의 기능을 확장하는 강력한 자동화 도구이다. 단순한 포트 스캔을 넘어 취약점 진단, 고급 정보 수집, 백도어 탐지 등 복잡한 작업을 수행할 수 있다.
1.1 스크립트 저장소 디렉토리(Directory)
- 경로: 리눅스 기준
/usr/share/nmap/scripts/에 저장된다. - 구성: 약 600개 이상의 스크립트(
.nse)가 기본 제공된다. - 카테고리:
default,safe,intrusive,vuln,exploit,auth,brute등으로 분류된다.nmap -sC는default카테고리 스크립트를 실행한다.
2. 심화 사용법(Advanced Usage)
2.1 특정 스크립트 지정 실행
기본 스크립트 외에 특정 목적을 가진 스크립트만 콕 집어 실행할 수 있다.
- 문법:
--script [script_name] - 예시: SSH 인증 방식 확인
nmap -p 22 --script ssh-auth-methods [Target_IP]- 결과:
publickey,password등 지원하는 인증 방식이 출력된다.
- 결과:
2.2 인자 전달(Passing Arguments)
스크립트 실행 시 필요한 파라미터(Parameter)를 전달할 수 있다.
- 문법:
--script-args [key=value] - 예시: SSH 사용자 리스트 파일 지정
nmap -p 22 --script ssh-brute --script-args userdb=/root/users.txt [Target_IP]
Tip: 각 스크립트의 사용법과 인자는
nmap.org공식 문서나nmap --script-help [script_name]명령어로 확인할 수 있다.
3. 외부 스크립트 활용(Third-Party Scripts)
Nmap 기본 스크립트에 없는 최신 취약점이나 특정 CMS 진단이 필요할 때, GitHub 등에서 외부 스크립트를 가져와 실행할 수 있다.
3.1 워드프레스 테마 탐지(WordPress Theme Enumeration) 예시
기본 스크립트로 해결되지 않을 때, 커뮤니티에서 개발된 스크립트를 활용한다.
- 검색(Finding): 구글이나 GitHub에서
wordpress theme enumeration nse등으로 검색. - 분석(Analysis): 스크립트(Lua 코드)를 열어 동작 원리를 파악한다.(나쁜 코드가 없는지 확인)
- 예: 사전 파일(Dictionary)을 불러와 URL 브루트포싱을 수행하는 로직 확인.
- 설치(Installation):
scripts디렉토리에.nse파일을 다운로드 또는 생성(붙여넣기)한다. - 실행(Execution):
nmap -p 80 --script http-wordpress-themes [Target_IP]
4. 커스텀 스크립트 개발(Custom Script Development)
NSE는 Lua(루아) 언어로 작성된다. 문법이 파이썬(Python)과 유사하여 배우기 쉽고, 자신만의 도구를 만들기 용이하다.
4.1 스크립트 구조
- Head: 스크립트 설명, 카테고리, 의존성 선언.
- Rule: 실행 조건 정의(예: 포트 80이 열려 있을 때만 실행).
- Action: 실제 수행할 로직(예: HTTP 요청 전송 -> 응답 파싱 -> 결과 반환).
4.2 프로그래밍 실습 제안
거창한 것이 아니다. "특정 URL 뒤에 파일명을 붙여서 요청을 보내고(Request), 200 OK가 오는지 확인(Response Analysis)"하는 간단한 로직도 훌륭한 NSE가 된다.
- 실무 활용: 사내 특화된 애플리케이션 진단이나, 막 공개된 Zero-day 취약점 탐지 코드를 NSE로 변환하여 대규모 스캔에 활용한다.